AndroidにSSL自己署名証明書を入れる

2022-08

SSLのオレオレ証明書をAndroidとPCに入れたい・・・

  • 昔は出来てた気がする。というかWin10だと普通に出来る
  • だけど、知らぬ間にAndroidで、オレオレ証明書がエラーになるようになった。信頼できない証明書になる。(入れてないのと同じ)


  • いろいろググったら、Android7から出来なくなってるらしい。
  • (理由は不明)
  • mkcertというツールで証明書を作成するとなぜかうまくいった。

やり方:

  • Ubuntu22.04
    # apt install mkcert
    $ mkcert -CAROOT
  • ここに表示されたディレクトリにある rootCA.pem を USB経由でAndoridに転送する。
  • 設定->セキュリティ->のしたのわかりにくいところにある、証明書をファイルからインストールを実行
  • ファイルを選択
  • 証明書インストール


  • 次、
    $ mkcert -key-file server.key  -cert-file server.crt <サイト名URL>
  • で出来たserver.key と server.crt を /etc/ssl/private に入れ、 server.crtを /etc/ssl/certs/ に入れて
  • ApacheのSSL設定に読み込ませる。
  • こんな感じ。


  • Windows10の場合は rootCA.pem を rootCA.pem.crt にリネームしてダブルクリック、
  • 証明書のインストール->現在のユーザー->証明書を次のストアに配置、信頼されたルート証明機関
  • でインストールできる。


要点としては、

  • rootCA.pem (ルート証明書)は mkcert を入れると、一度だけ作られる。
  • クライアント側端末には、それを証明書ストアに配置する。
  • WEBサーバーは、rootCA.pemを直接入れるわけではなく、rootCA.pemで署名してもらった server.key と server.crt をApacheのSSL証明書として使用する。
  • 違うURLや違うIPアドレスの証明書も、同じように
    $ mkcert -key-file server.key  -cert-file server.crt <サイト名URL>
  • で作成して、それぞれのWEBサーバーに設置すればよい。
  • 端末側に仕込む rootCA.pem は共通になる。(1回だけでよい)